Java Matches Kullanımı Hakkında
Az önce sohbet'ten sorulan bir soruya şu anda sohbet'e erişemediğim için buradan cevap vermek zorunda kaldım. Matches kullanacak diğer arkadaşlara da faydalı olması dileğiyle..
Soru: String s3 = ".10 Final-Sinavi "; System.out.println(s3.matches("(\\S*\\D*\\W\\S*\\W*)")); System.out.println(s3.matches("(\\D*\\W\\S*\\W*\\D)"));
İlk yazdırılan kısım true sonuç verirken ikinci kısım false sonucu veriyor farkı nedir ?
Şöyle ki mathes'ın içine yazılan karakterlerin bir anlamı bulunmaktadır. Bunlar aşağıdaki şekilde tanımlanmaktadır.
\D 0 ile 9 arasındaki rakamlar haricindeki karakter Kısaca : [^0-9]
\S Whitespace karakter haricindeki bir karakter, Kısaca: [^\s]
\W Word karakter harici bir karakter. Yani küçük harf, büyük harf veya rakam harici bir karakter [^\w]
Print işleminde \S ile işleme başlanmıştır. Yani " \t\n\x0b\r\f " bu karakterler hariç herhangi bir karakter gelebileceğni söylüyor. String ifademiz ise .(nokta) ile
başlamaktadır. bu yüzden işlem true olarak devam eder. * ifadesi bu karakterden sınırsız gelebileceğini söylemektedir bütün ifadeler için geçerlidir. İlk gelen karakter .(nokta) olduğu için ikinci print işlemi false sonucunu vermektedir.